/*
    -- Promise 上有两个函数:
        reject（失败后的回调函数）
        resolve （成功后的回调函数）
    -- 在 Prototype 属性上有一个 .then()方法，也就是只要是 Promise构造函数创造的实例都能调用该方法
    -- Promise 表示一个异步操作，每当我们 new 一个 Promise实例，这个实例就表示一个异步操作
    -- 异步操作只有两个状态：
        异步执行成功（调用resolve）、异步执行失败（调用reject)
    -- 由于是异步操作，所以无法用 return把操作的结果返回给调用者，只能需要回调函数来返回
    -- 通过 .then() 预先指定 reject、resolve函数

    -- 形式上的异步操作（不清楚内部具体的操作）

    var promise = new Promise() // 形式上

    var promise = new Promise(function(){ }) // function() 内部就是具体的内部操作  每当 new 一个实例的时候都会执行这个异步操作的中代码

    -- 执行顺序
*/
console.log('***↓↓↓***')
const fs = require('fs')

function getFilePath(fpath){
    return new Promise(function(resolve,reject){
        fs.readFile(fpath, 'utf-8', (err,data)=>{
            if(err) return reject(err)
            resolve(data)
        })
    })
}

getFilePath('./files/file1.txt')
.then((data)=>{
    console.log(data)
},(err)=>{
    console.log(err.message)
})

